package com.alibaba.result;

import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@JsonInclude(JsonInclude.Include.NON_NULL)
public class FileResult {

    /** 操作是否成功 10000为成功 10001为失败 */
    private String code;

    /** 描述信息，例如“上传成功”或错误原因 */
    private String message;

    /** 文件操作类型 */
    private OperationType operationType;

    /** 文件具体信息放在 data 中 */
    private FileData data;

    @Data
    @Builder
    @AllArgsConstructor
    @NoArgsConstructor
    @JsonInclude(JsonInclude.Include.NON_NULL)
    public static class FileData {
        /** 唯一文件名 */
        private String fileName;

        /** 文件类型（扩展名） */
        private String fileType;

        /** 文件所在桶 */
        private String bucket;

        /** 文件访问 URL */
        private String url;

        /** 上传时间戳 */
        private String actionTime;
    }

    /**
     * 文件操作类型枚举
     */
    public enum OperationType {
        UPLOAD,       // 上传
        DOWNLOAD,     // 下载
        DELETE,       // 删除
        COPY,         // 拷贝
        OTHER         // 其他自定义场景
    }
}

